package com.spdzen.support.result;

import java.io.Serializable;

/**
 * 全局通用的错误消息，业务相关消息不要放在里面。
 * 9开头的数字作为BaseResultCode的code
 * @author accountwcx@qq.com
 *
 */
public enum BaseResultCode implements ResultCode, Serializable {
	SUCCESS("0", "操作成功", ""),
	SYS_ERROR("90001", "哎呀，服务器打盹了！", "系统捕获到的异常，与具体业务无关。"),
	ERROR("90002", "哎呀，服务器打盹了！", "业务执行错误，一般在Service、Controller中捕获异常返回该错误。"),
	
	NOT_LOGIN("90003", "请先登录！", "用户没有登录"),
	UNAUTHORIZED("90004", "没有权限！", "用户没有操作该功能的权限"),
	
	PARAMETER_ERROR("91001", "参数不符合要求", "参数不符合要求")	
	;

	/**
	 * 代码
	 */
	private String code;

	/**
	 * 提示消息，该消息会返回给客户端。
	 */
	private String message;

	/**
	 * 描述信息，该描述不会返回给客户端。
	 */
	private String description;

	private BaseResultCode(String code, String message, String description) {
		this.code = code;
		this.message = message;
		this.description = description;
	}

	@Override
	public String getCode() {
		return code;
	}

	@Override
	public String getMessage() {
		return message;
	}

	@Override
	public String getDescription() {
		return description;
	}
	
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("{code=").append(this.code).append(", ");
		sb.append("message=").append(this.message).append(", ");
		sb.append("description=").append(this.description).append("}");
		return sb.toString();
	}
	
	public static String getSuccessCode() {
		return SUCCESS.getCode();
	}
	
	public static String getErrorCode() {
		return ERROR.getCode();
	}
}
